home *** CD-ROM | disk | FTP | other *** search
/ Aminet 45 / Aminet 45 (2001)(GTI - Schatztruhe)[!][Oct 2001].iso / Aminet / dev / src / sort.lha / Selection_Sort.c < prev    next >
C/C++ Source or Header  |  2001-08-22  |  1KB  |  73 lines

  1. /*
  2. **  Selectionsort in C
  3. **  Norman Walter, Universität Stuttgart
  4. **  Datum: 21.8.2001
  5. **
  6. **  Eigenschaften: Selection Sort benötigt ungefähr
  7. **  N^2/2 Vergleiche und N Austauschoperationen.
  8. **  Für Dateien mit großen Datensätzen und kleinen
  9. **  Schlüsseln ist Selection Sort linear.
  10. */
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14.  
  15. #define maxN 100
  16.  
  17. void display(int a[], int n)
  18. {
  19.  
  20. /* Gibt komplettes Array aus */
  21.  
  22.    int i;
  23.    for (i = 1; i <= n; i++) printf ("%d ", a[i]);
  24.     printf("\n");
  25. }
  26.  
  27.  
  28. void selection(int a[], int N)
  29.  
  30. /* Selection-Sort Algorithmus */
  31. /* Sortieren durch direktes Auswählen */
  32.  
  33.   {
  34.  
  35.     /* Wiederholt das kleinste verbleibende Element auswählen */
  36.  
  37.     int i, j, min, t;
  38.     for (i = 1; i < N; i++)
  39.         {
  40.             min = i;
  41.             for (j = i+1; j <= N; j++)
  42.             if (a[j] < a[min]) min = j;
  43.                 /* Elemente Austauschen */
  44.                 t = a[min]; a[min] = a[i]; a[i] = t; display(a,N);
  45.          }
  46.   }
  47.  
  48. int main()
  49.  
  50. {
  51.  
  52. int i;
  53. int n, a[maxN+1];
  54.  
  55. /* Schleife erzeugt zufällige Permutation */
  56.  
  57.   for(n=0; n<=15; n++)
  58.   {
  59.     i = rand() % 10;
  60.     a[n+1] = i;
  61.     printf ("%d ",i);
  62.   }
  63.  
  64. printf("\n");
  65.  
  66. /* Array sortieren */
  67.  
  68. a[0] = 0; selection(a,n);
  69.  
  70. return(0);
  71.  
  72. }
  73.